home *** CD-ROM | disk | FTP | other *** search
/ Large Pack of OldSkool DOS MOD Trackers / buzzmachines_massive.exe / Dev / Geoffroy Notefilter SourceCode / BuzzParameter.h < prev    next >
Encoding:
C/C++ Source or Header  |  2002-05-25  |  2.8 KB  |  109 lines

  1. // BuzzParameter.h: interface for the BuzzParameter class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4.  
  5. #if !defined(AFX_BUZZPARAMETER_H__7FE80804_5C2A_45A4_A003_9B0518A09195__INCLUDED_)
  6. #define AFX_BUZZPARAMETER_H__7FE80804_5C2A_45A4_A003_9B0518A09195__INCLUDED_
  7.  
  8. #if _MSC_VER > 1000
  9. #pragma once
  10. #endif // _MSC_VER > 1000
  11.  
  12. template <class SliderValueType, class RealValueType>
  13. class BuzzParameter  
  14. {
  15. public:
  16.     BuzzParameter();
  17.     virtual ~BuzzParameter();
  18.  
  19.     // your class should contain the following static variables
  20.     /*
  21.     static SliderValueType MIN_SLIDER_VALUE;
  22.     static SliderValueType MAX_SLIDER_VALUE;
  23.     static SliderValueType UNCHANGED_SLIDER_VALUE;
  24.     static SliderValueType INIT_SLIDER_VALUE;
  25.  
  26.     static RealValueType MIN_REAL_VALUE;
  27.     static RealValueType MAX_REAL_VALUE;
  28.     */
  29.  
  30.     void setSliderValue(SliderValueType sliderValue);
  31.     RealValueType getRealValue();
  32.     void timeGoesBy(int timeInSamples);
  33.     void setInertia(int timeInSamples);
  34.  
  35.     virtual char const * toString(SliderValueType const value);
  36.  
  37. protected:
  38.     SliderValueType currentSliderValue;
  39.     RealValueType currentRealValue;
  40.     int timeSinceLastValueUpdate;
  41.     int inertia;
  42.     int timeBetweenTwoUpdates;
  43.  
  44.     virtual void compute();
  45. };
  46.  
  47. // we are on a template
  48.  
  49. template <class SliderValueType, class RealValueType> 
  50. BuzzParameter<SliderValueType,RealValueType>::BuzzParameter()
  51. {
  52.     inertia = 0;
  53.     timeBetweenTwoUpdates = 1;
  54. }
  55.  
  56. template <class SliderValueType, class RealValueType> 
  57. BuzzParameter<SliderValueType,RealValueType>::~BuzzParameter()
  58. {
  59.     // nothing
  60. }
  61.  
  62. template <class SliderValueType, class RealValueType>
  63. void BuzzParameter<SliderValueType,RealValueType>::setSliderValue(SliderValueType sliderValue)
  64. {
  65.     currentSliderValue = sliderValue;
  66.     timeSinceLastValueUpdate = 0;
  67.     compute();
  68. }
  69.  
  70. template <class SliderValueType, class RealValueType>
  71. RealValueType BuzzParameter<SliderValueType,RealValueType>::getRealValue()
  72. {
  73.     return currentRealValue;
  74. }
  75.  
  76. template <class SliderValueType, class RealValueType>
  77. void BuzzParameter<SliderValueType,RealValueType>::timeGoesBy(int timeInSamples)
  78. {
  79.     timeBetweenTwoUpdates = timeInSamples;
  80.     timeSinceLastValueUpdate += timeInSamples;
  81.     compute();
  82. }
  83.  
  84. template <class SliderValueType, class RealValueType>
  85. void BuzzParameter<SliderValueType,RealValueType>::setInertia(int timeInSamples)
  86. {
  87.     inertia = timeInSamples;
  88. }
  89.  
  90. template <class SliderValueType, class RealValueType>
  91. void BuzzParameter<SliderValueType,RealValueType>::compute()
  92. {
  93.     // to be defined in child class
  94. }
  95.  
  96. template <class SliderValueType, class RealValueType>
  97. char const * BuzzParameter<SliderValueType,RealValueType>::toString(SliderValueType const value)
  98. {
  99.     static char txt[50];
  100.     txt[0]=0;
  101.  
  102.     sprintf(txt,"not defined");
  103.  
  104.     return txt;
  105.  
  106. }
  107.  
  108. #endif // !defined(AFX_BUZZPARAMETER_H__7FE80804_5C2A_45A4_A003_9B0518A09195__INCLUDED_)
  109.